A telecommunications network generally includes a collection of terminals, links and nodes which connect together to enable telecommunication between users of the terminals. Examples of telecommunications networks are: computer networks, the Internet, the telephone network, and others. Messages are generated by a sending terminal, then pass through the network of links and nodes until they arrive at the destination terminal. It is the job of the intermediate nodes to handle the messages and route them down the correct link toward their final destination. The messages consist of control (or signaling) and media parts which can be sent together or separately. The control (or signaling) part instructs the nodes where and possibly how the message should be routed through the network. The media is the actual content that the user wishes to transmit (e.g. some encoded speech, or an e-mail).
A typical Voice over Internet Protocol (VoIP) network may comprise of one or more application servers, one or more centralized media servers, one or more media gateways, and a plurality of VoIP endpoints. The application server provides call processing within the VoIP network. The media server includes media resources that are adapted to provide value-added services for calls in the VoIP network, such as playing announcements, compression/decompression (CODEC) conversion, DTMF digit collection, conferencing, ringback tones, advertising, etc. The media gateway is adapted to interface the VoIP network with a public switched telephone network (PSTN). The VoIP endpoints are network elements used to originate or terminate a call over the VoIP network, such as a VoIP phone, a PDA, a computer having VoIP capabilities, etc.
A number of protocols have been developed over the years to specify how each different type of telecommunication network should handle the control and media parts to achieve this efficiently. One such protocol is Session Initiation Protocol (SIP), an Internet Protocol (IP) telephony text-based signaling protocol suitable for integrated voice/data applications, including VoIP services. Each resource of a SIP network, such as a user agent or a voicemail box, is identified by a uniform resource identifier (URI). SIP is primarily used in setting up and tearing down voice or video calls. It also allows modification of existing calls. The modification can involve changing addresses or ports, inviting more participants, and adding or deleting media streams.
Some SIP Commands and Other Terminology
Some SIP commands and other terminology that may be used herein may include:
Call
A call is an informal term that refers to some communication between peers, generally set up for the purposes of a multimedia conversation.
Call Leg
Another name for a dialog; no longer used in the SIP specification.
Client
A client is any network element that sends SIP requests and receives SIP responses. Clients may or may not interact directly with a human user. User agent clients and proxies are clients.
Conference
A multimedia session (see below) that contains multiple participants.
Inter-Process Communication (IPC)
Inter-Process Communication is any method used to communicate between different processes, such as remote procedure calls.
Invitation
An INVITE request.
INVITEe, INVITEd User, Called party, Callee
The party that receives an INVITE request for the purpose of establishing a new session. A callee retains this role from the time it receives the INVITE until the termination of the dialog established by that INVITE.
Message
Data sent between SIP elements as part of the protocol. SIP messages are either requests or responses.
Redirect Server
A redirect server is a user agent server that generates 3xx responses to requests it receives, directing the client to contact an alternate set of URIs.
REFER
From RFC 3515: REFER is a SIP method as defined by RFC 3261. The REFER method indicates that the recipient identified by the Request-URI should contact a third party using the contact information provided in the request.
Request
A SIP message sent from a client to a server, for the purpose of invoking a particular operation.
Server
A server is a network element that receives requests in order to service them and sends back responses to those requests. Examples of servers are proxies, user agent servers, redirect servers, and registrars.
Session
From the SDP (Session Description Protocol) specification: “A multimedia session is a set of multimedia senders and receivers and the data streams flowing from senders to receivers. A multimedia conference is an example of a multimedia session.” (RFC 2327 (A session as defined for SDP can comprise one or more RTP sessions.) As defined, a callee can be INVITEd several times, by different calls, to the same session. If SDP is used, a session is defined by the concatenation of the SDP user name, session id, network type, address type, and address elements in the origin field.
SIP Transaction
A SIP transaction occurs between a client and a server and comprises all messages from the first request sent from the client to the server up to a final (non-1xx) response sent from the server to the client. If the request is INVITE and the final response is a non-2xx, the transaction also includes an ACK to the response. The ACK for a 2xx response to an INVITE request is a separate transaction.
URI (Uniform Resource Identifier) [RFC 2396]
A string of characters for identifying all types of names and addresses on the Internet (e.g., a page of text, a video, a program, a SIP proxy). It enables a XXXXXX to interact with the resource over a network (typically the Internet) using specific protocols. Schemes specifying a concrete syntax and associated protocols define each URI.
User Agent Server (UAS)
A user agent server is a logical entity that generates a response to a SIP request. The response accepts, rejects, or redirects the request. This role lasts only for the duration of that transaction. In other words, if a piece of software responds to a request, it acts as a UAS for the duration of that transaction. If it generates a request later, it assumes the role of a user agent client for the processing of that transaction.
User Agent (UA)
A logical entity that can act as both a user agent client and user agent server.
Media Servers
Media Servers are automated call processing servers in a VoIP system. A Media Server (MS) acts as the end point for a SIP call and typically plays pre-recorded voice announcements and prompts, accepts DTMF key presses or spoken instructions to allow it to implement interactive services such as voicemail, tele-banking, tele-voting etc.
U.S. Pat. No. 7,656,866 B2, incorporated by reference herein, discloses methods of controlling media server resources in a VoIP network, and a media server resource broker that tracks assignment levels of a plurality of media servers. This technology is similar in that like in embodiments of the present invention it is a system that uses an application server and several media servers to provide services. However, unlike in embodiments of the present invention, requests for services come from IP Nodes. In embodiments of the present invention, there are no such requests, the application server itself selects a media server to initiate a SIP call and then can move an agent's call in order to conference the two parties within a single media server node. The system described in U.S. Pat. No. 7,656,866 B2 does not have the need for the method according to embodiments of the present invention because it does not address a predictive outbound dialing system. Embodiments of the present invention solve a problem that is only present when doing predictive outbound dialing in a system with multiple media servers.
US 2008/0317238 A1, incorporated by reference herein, discloses distributed media resources in VoIP networks for providing services. A distributed resource server is adapted to monitor the status of the available media resources of the VoIP endpoints and to transmit configuration parameters to the VoIP endpoints to configure the available media resources of the VoIP endpoints to provide the services for calls in the VoIP network. Embodiments of the present invention use multiple media servers and as such some mechanism to choose how to distribute the load amongst the media servers is needed. However, embodiments of the present invention do not specify any particular method to do that.
U.S. Pat. No. 8,238,543 B2, incorporated by reference herein, discloses a system for making outbound calls which includes a first node connected to a network for placing outbound telephone calls, a second node connected to the network and accessible to the first node for reporting agent status relative to busy, ready, and time to ready, a number of agent appliances connected to the network and accessible to the second node, and a number of agent activity applications installed one per on the agent appliances. In a preferred embodiment outbound calls are predicted based on the number of agents reported ready to accept a call plus the number of agents predicted to be ready to accept a call within a specified time window.
U.S. Pat. No. 6,449,358 B1, incorporated by reference herein, discloses a system for balancing outbound dialing rate with agent utilization in a telephony call center, minimizing wait time for answered outdialed calls which has a call number generating module for generating numbers to be automatically dialed, a dialing unit for dialing numbers generated, a queue for queing answered calls, and a stat module for monitoring performance and generating a call generation rate. The system uses an analytical method in one embodiment for determining the call generation rate, wherein the method uses one or more of distribution function of system processes, numerical methods, solving of non-linear equations, or probability techniques. In another embodiment the system accomplishes the same purpose using a simulation method for determining the call generation rate, wherein parameters relating to a queing system are estimated in absence of sufficient information by simulating each of the system's processes, predicting behavior of the system on basis of previous experience, and finding optimal point in future to make a next call.
U.S. Pat. No. 6,282,282 B1, incorporated by reference herein, discloses an inbound/outbound balancing system which transfers agents based on a predicted future inbound average call waiting time. The future average call waiting time is predicted to be the then sampled average call waiting time times the slope (i.e. rate of change) in average call waiting time between the current sample and the next previous sample. Based upon the predicted call waiting time, a determination is made whether or not agents should be added or deleted to maintain the inbound performance parameter within an acceptable range. The direction of change in call waiting time (i.e. increasing or decreasing); the rate at which it is changing, and the duration of the predicted average call waiting time relative to the boundaries of a range area are used to determine whether or not to reassign blend agents and if reassigned, how many to reassign.
Predictive Dialing
A predictive dialer is a computerized system that automatically dials batches of telephone numbers for connection to agents assigned to sales or other campaigns. Predictive dialers are widely used in call centers. A predictive dialer dials a list of “customer” telephone numbers, and connects answered dials to people who will be handling answered calls, often referred to as agents. Predictive dialers may use statistical algorithms to minimize the time that agents spend waiting between conversations, while minimizing the occurrence of someone answering when no agent is available. If an agent is not available within a short time period, such as 2 seconds, the call may be considered “abandoned” and an automated message may be played. Regulations in some countries may require that predictive dialers abandon less than 3% of answered calls on a daily basis.
Predictive dialing generally requires the system to perform the following basic steps:    1. dial a customer's phone number    2. analyze the signaling and the media of the call to determine a call result, such as whether the call is answered or not    3. for a positive call result (call is answered, and considered to be an “active call”), the system:            a. finds an available agent        b. routes the call to that agent's phone        c. may send a screen pop to the agent's screen with information about the call        
One way of minimizing a delay between the time that a customer called by the outbound system answers the phone and the time that the call is connected by the system (routed to) an agent is to ensure that the answered call is routed to an agent that is already connected in the system. These processes may be referred to as “agent nailup”.
A typical outbound system uses a media server (MS) and a controller. The controller instructs the media server to perform the steps of (step 1) dialing the customer numbers and (step 2) determining the call result. For a positive call result (step 3), the controller (step 3a) finds an available agent and instructs the media server to create a conference between the customer call leg and the agent nailup, in essence routing the call to the agent (step 3b). The controller may then also (step 3c) send a signal (screen pop) to the agent's desktop computer (or other display device) so that the called customer's information can be displayed to the agent assigned to the call.
FIG. 1 illustrates a single-node, predictive dialing system 100 comprising a controller 110 and a media server (MS) 120. The controller 110 directs the actions of the media server 120 such as by sending commands (using some IPC method) to the media server 120, and the media server 120 may send responses (also using IPC) back to the controller 110, as indicated by the line 112. The media server 120 constitutes a node in the system 100, and may be referred to as a “media server node”, or simply as a “node”.
An agent 130 who may be one of many agents using the system 100 (such as in a call center) is shown. A customer 140 who may be one of many customers who are called (dialed) by the system 100 is shown. The controller 110 may direct (command) the media server 120 to call a plurality of customers 140 using a predictive dialing scheme. The agent(s) 130 and the customer(s) 140 are, of course, not part of the system 100, but they interact with the system 100. The media server 120 may establish a nailup with an agent, as indicated by the line 132. The media server 120 may dial a customer, as indicated by the line 142.
In an exemplary use scenario, the media server 120 (and controller 110) may perform the following steps (shown by dashed lines):                (1) establish a nailup with an agent 130;        (2) dial a customer 140;        (3) analyze the result of the call (whether the call is answered by the customer 140);        (4) connect the agent 130 and the customer 140 in a conference; and        (5) the controller 110 may send a “screen pop” to the agent's screen, via the media server 120, with information (such as name, personal profile, demographic information, and the like) about the customer 140 with whom the agent 130 is connected.        
A problem with the approach such as described above and illustrated in FIG. 1 is “scalability”. An outbound calling system can typically only scale up to the maximum number of call legs (calls to customers, agent nailups) that a single media server (MS) can handle, which may be limited due to the processing requirements of signaling and media handling within the system. For example, a system may be limited to only 375 agents using G.729 (an ITU standard codec) channels, which means if a purchaser (user) of the system wants to purchase licenses for 500 agents, system's vendor would need to sell the purchaser two independent systems.